package it.polimi.traveldream.managers;

import java.util.List;

import it.polimi.traveldream.persistence.dtos.PacchettoDTO;
import it.polimi.traveldream.persistence.dtos.HotelProdDTO;
import it.polimi.traveldream.persistence.dtos.PacchettoPersonalizzatoDTO;
import it.polimi.traveldream.persistence.dtos.PonteHotelPaccDTO;
import it.polimi.traveldream.persistence.dtos.PonteTourPaccDTO;
import it.polimi.traveldream.persistence.dtos.PonteTrattaVoloDTO;
import it.polimi.traveldream.persistence.dtos.TourProdDTO;
import it.polimi.traveldream.persistence.dtos.TrattaProdDTO;

public interface PacchettoManager {

	public static class PacchettoException extends Exception {

		/**
		 * 
		 */
		private static final long serialVersionUID = 1387052149160814259L;

		public PacchettoException() {
			super();
		}

		public PacchettoException(String message) {
			super(message);
		}

		public PacchettoException(String message, Throwable throwable) {
			super(message, throwable);
		}
	}

	public void savePacchetto(PacchettoDTO pacchettoDTO);

	public void updateBasicInformationsPacchetto(PacchettoDTO pacchettoDTO);

	public void deletePacchetto(int pacchettoDTOID);

	public PacchettoDTO findPacchetto(int pacchettoDTOID);

	public List<PacchettoDTO> findAllPacchetto();

	// List<HotelProdDTO>
	// public List<HotelProdDTO> findHotelInPacchetto(PacchettoDTO
	// pacchettoDTO);

	public List<HotelProdDTO> findHotelInPacchetto(int IDPacchetto);

	public List<PonteHotelPaccDTO> findPonteHotelInPacchetto(int IDPacchetto);

	public List<PonteTourPaccDTO> findPonteTourInPacchetto(int IDPacchetto);

	public List<PonteTrattaVoloDTO> findPonteVoloInPacchetto(int IDPacchetto);

	public List<HotelProdDTO> getPackHotels(int id);

	public List<TourProdDTO> getPackTours(int id);

	public List<TrattaProdDTO> getTratteTours(int id);

	public void updatePacchetto(PacchettoDTO pacchetto);

	public List<PacchettoDTO> findPubPacchetto();
}
